using System;
using System.Collections.Generic;
using System.Text;
using Entidades;
using DataAccessArquitectura;
using System.Data;
using System.Windows.Forms;
using MySql.Data.MySqlClient;

/*
 * Nombre archivo: rotacion_baseBuilder.cs 
 *
 * Descripcion: Manipulacion de la tabla rotacion_base, con los metodos de consulta, grabado, actulaizacion
 * y recuperacion de un registro
 *
 * Autor: PLUS-EW
 * Fecha: 11/09/2011 13:12:50
 *
 * Historial
 * ---------------------------------------------------------
 * Autor            Fecha               Modificación
 *
 */

namespace Reglas_Negocio
{
	public class rotacion_baseBuilder
	{
		private const enmTipoBaseDatos mTipoBD = enmTipoBaseDatos.MySQL;

		#region < METODOS PUBLICOS CONSULTA >
		public static DataTable ListarTodos()
		{
			try
			{
				return ListarTodos("");
			}
			catch (Exception ex)
			{
				throw ex;
			}
		}
		public static DataTable ListarTodos(string filtro)
		{
			DataTable r = new DataTable();
			try
			{
				ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
				r = bd.EjecutarSelectDs("*", "rotacion_base", filtro).Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}
		public static bool Existe(string filtro)
		{
			int numero = 0;
			bool r = false;
			try
			{
				ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
				numero = Convert.ToInt32(bd.EjecutarSelectScalar("COUNT(*)", "rotacion_base", filtro));
				r = (numero > 0);
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}
		#endregion

		#region < METODOS PUBLICOS GRABADO >
		public static bool GrabarViaProcedimiento(rotacion_base datos)
		{
			int numero = 0;
			bool r = false;
			string filtro = "";
			try
			{
				string strConectionInsert = "INSERT INTO rotacion_base (id_emp_fk_rot,dia_rot,jornada_rot,orden_emp_rot,ids_hor_emp_fk_rot,tipo_trabajo_rot,id_sem_fk,dia_descanso) VALUES (?id_emp_fk_rot,?dia_rot,?jornada_rot,?orden_emp_rot,?ids_hor_emp_fk_rot,?tipo_trabajo_rot,?id_sem_fk,?dia_descanso);";
				string strConectionUpdate = "UPDATE rotacion_base SET id_emp_fk_rot = ?id_emp_fk_rot,dia_rot = ?dia_rot,jornada_rot = ?jornada_rot,orden_emp_rot = ?orden_emp_rot,ids_hor_emp_fk_rot = ?ids_hor_emp_fk_rot,tipo_trabajo_rot = ?tipo_trabajo_rot,id_sem_fk = ?id_sem_fk,dia_descanso = ?dia_descanso WHERE id_rot=?id_rot;";

				ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
				MySqlParameter psqlId_rot = new MySqlParameter("?id_rot", MySqlDbType.Int32);
				MySqlParameter psqlId_emp_fk_rot = new MySqlParameter("?id_emp_fk_rot", MySqlDbType.Int32);
				MySqlParameter psqlDia_rot = new MySqlParameter("?dia_rot", MySqlDbType.VarChar,300);
				MySqlParameter psqlJornada_rot = new MySqlParameter("?jornada_rot", MySqlDbType.VarChar,20);
				MySqlParameter psqlOrden_emp_rot = new MySqlParameter("?orden_emp_rot", MySqlDbType.Int32);
				MySqlParameter psqlIds_hor_emp_fk_rot = new MySqlParameter("?ids_hor_emp_fk_rot", MySqlDbType.VarChar,50);
				MySqlParameter psqlTipo_trabajo_rot = new MySqlParameter("?tipo_trabajo_rot", MySqlDbType.VarChar,20);
				MySqlParameter psqlId_sem_fk = new MySqlParameter("?id_sem_fk", MySqlDbType.Int32);
				MySqlParameter psqlDia_descanso = new MySqlParameter("?dia_descanso", MySqlDbType.VarChar,300);

				psqlId_rot.Value = datos.Id_rot;
				psqlId_emp_fk_rot.Value = datos.Id_emp_fk_rot;
				psqlDia_rot.Value = datos.Dia_rot;
				psqlJornada_rot.Value = datos.Jornada_rot;
				psqlOrden_emp_rot.Value = datos.Orden_emp_rot;
				psqlIds_hor_emp_fk_rot.Value = datos.Ids_hor_emp_fk_rot;
				psqlTipo_trabajo_rot.Value = datos.Tipo_trabajo_rot;
				psqlId_sem_fk.Value = datos.Id_sem_fk;
				psqlDia_descanso.Value = datos.Dia_descanso;

				if (!Existe("id_rot=" + datos.Id_rot))
				{
					numero = bd.EjecutarProcedimientoMySQL(strConectionInsert
							, psqlId_rot
							, psqlId_emp_fk_rot
							, psqlDia_rot
							, psqlJornada_rot
							, psqlOrden_emp_rot
							, psqlIds_hor_emp_fk_rot
							, psqlTipo_trabajo_rot
							, psqlId_sem_fk
							, psqlDia_descanso
							);
					MessageBox.Show("Se grabo [rotacion_base] exitosamente....","Información",MessageBoxButtons.OK,MessageBoxIcon.Information);
				}
				else
				{
					numero = bd.EjecutarProcedimientoMySQL(strConectionUpdate
							, psqlId_rot
							, psqlId_emp_fk_rot
							, psqlDia_rot
							, psqlJornada_rot
							, psqlOrden_emp_rot
							, psqlIds_hor_emp_fk_rot
							, psqlTipo_trabajo_rot
							, psqlId_sem_fk
							, psqlDia_descanso
							);
					MessageBox.Show("Se actualizó [rotacion_base] exitosamente....","Información",MessageBoxButtons.OK,MessageBoxIcon.Information);
				}
				r = (numero < 0);
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static void GrabarViaSql(rotacion_base datos)
		{
			try
			{
				ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
                string filtro = string.Format("id_rot='{0}' AND id_sem_fk='{1}' AND dia_rot='{2}' AND id_emp_fk_rot='{3}' AND ids_hor_emp_fk_rot='{4}' AND jornada_rot='{5}' AND tipo_trabajo_rot='{6}'", datos.Id_rot, datos.Id_sem_fk, datos.Dia_rot, datos.Id_emp_fk_rot, datos.Ids_hor_emp_fk_rot, datos.Jornada_rot, datos.Tipo_trabajo_rot);
				if (!Existe(filtro))
				{
					bd.EjecutarInsert("rotacion_base"
						, new CampoValor("id_emp_fk_rot", datos.Id_emp_fk_rot.ToString())
						, new CampoValor("dia_rot", datos.Dia_rot)
						, new CampoValor("jornada_rot", datos.Jornada_rot)
						, new CampoValor("orden_emp_rot", datos.Orden_emp_rot.ToString())
						, new CampoValor("ids_hor_emp_fk_rot", datos.Ids_hor_emp_fk_rot)
						, new CampoValor("tipo_trabajo_rot", datos.Tipo_trabajo_rot)
						, new CampoValor("id_sem_fk", datos.Id_sem_fk.ToString())
						, new CampoValor("dia_descanso", datos.Dia_descanso)
						);
                    //MessageBox.Show("Se grabo [rotacion_base] exitosamente....","Información",MessageBoxButtons.OK,MessageBoxIcon.Information);
				}
				else
				{
					bd.EjecutarUpdate("rotacion_base", filtro
						, new CampoValor("id_emp_fk_rot", datos.Id_emp_fk_rot.ToString())
						, new CampoValor("dia_rot", datos.Dia_rot)
						, new CampoValor("jornada_rot", datos.Jornada_rot)
						, new CampoValor("orden_emp_rot", datos.Orden_emp_rot.ToString())
						, new CampoValor("ids_hor_emp_fk_rot", datos.Ids_hor_emp_fk_rot)
						, new CampoValor("tipo_trabajo_rot", datos.Tipo_trabajo_rot)
						, new CampoValor("id_sem_fk", datos.Id_sem_fk.ToString())
						, new CampoValor("dia_descanso", datos.Dia_descanso)
						);
                    //MessageBox.Show("Se actualizó [rotacion_base] exitosamente....","Información",MessageBoxButtons.OK,MessageBoxIcon.Information);
				}
			}
			catch (Exception ex)
			{
				throw ex;
			}
		}
		#endregion

		#region < METODOS PUBLICOS RECUPERACION >
		public static rotacion_base Recuperar(string filtro)
		{
			rotacion_base r = new rotacion_base();
			try
			{
				if (Existe(filtro))
				{
					DataTable ds = ListarTodos(filtro);
					r.Id_rot = Convert.ToInt32(ds.Rows[0]["id_rot"]);
					r.Id_emp_fk_rot = Convert.ToInt32(ds.Rows[0]["id_emp_fk_rot"]);
					if (ds.Rows[0]["dia_rot"] != System.DBNull.Value)
						r.Dia_rot = ds.Rows[0]["dia_rot"].ToString();
					if (ds.Rows[0]["dia_rot"] == System.DBNull.Value)
						r.Dia_rot = "";
					if (ds.Rows[0]["jornada_rot"] != System.DBNull.Value)
						r.Jornada_rot = ds.Rows[0]["jornada_rot"].ToString();
					if (ds.Rows[0]["jornada_rot"] == System.DBNull.Value)
						r.Jornada_rot = "";
					r.Orden_emp_rot = Convert.ToInt32(ds.Rows[0]["orden_emp_rot"]);
					if (ds.Rows[0]["ids_hor_emp_fk_rot"] != System.DBNull.Value)
						r.Ids_hor_emp_fk_rot = ds.Rows[0]["ids_hor_emp_fk_rot"].ToString();
					if (ds.Rows[0]["ids_hor_emp_fk_rot"] == System.DBNull.Value)
						r.Ids_hor_emp_fk_rot = "";
					if (ds.Rows[0]["tipo_trabajo_rot"] != System.DBNull.Value)
						r.Tipo_trabajo_rot = ds.Rows[0]["tipo_trabajo_rot"].ToString();
					if (ds.Rows[0]["tipo_trabajo_rot"] == System.DBNull.Value)
						r.Tipo_trabajo_rot = "";
					r.Id_sem_fk = Convert.ToInt32(ds.Rows[0]["id_sem_fk"]);
					if (ds.Rows[0]["dia_descanso"] != System.DBNull.Value)
						r.Dia_descanso = ds.Rows[0]["dia_descanso"].ToString();
					if (ds.Rows[0]["dia_descanso"] == System.DBNull.Value)
						r.Dia_descanso = "";
					r.Empleados = empleadosBuilder.Recuperar("id_emp=" + ds.Rows[0]["id_emp_fk_rot"]);
					r.Semana_base = semana_baseBuilder.Recuperar("id_sem=" + ds.Rows[0]["id_sem_fk"]);
				}
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}
		#endregion

		#region < METODOS PUBLICOS BORRADO >
		public static void Borrar(string filtro)
		{
			try
			{
				ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
				bd.EjecutarDelete("rotacion_base", filtro);
			}
			catch (Exception ex)
			{
				throw ex;
			}
		}
		public static void BorrarTodos()
		{
			try
			{
				Borrar("");
			}
			catch (Exception ex)
			{
				throw ex;
			}
		}
		#endregion

		#region < METODOS PUBLICOS EXTRAS >
		public static void Listar_Combobox(ComboBox cmbrotacion_base, string filtro, string nombre_display)
		{
			cmbrotacion_base.DataSource = ListarTodos(filtro);
			cmbrotacion_base.DisplayMember = nombre_display;
			cmbrotacion_base.ValueMember = "id_rot";
		}

		public static DataTable ListarTodos_Alias(string filtro)
		{
			DataTable r = new DataTable();
			try
			{
				ArquitecturaDB bd = new ArquitecturaDB(mTipoBD);
				r = bd.EjecutarSelectDs("id_rot AS id_rot,id_emp_fk_rot AS id_emp_fk_rot,dia_rot AS dia_rot,jornada_rot AS jornada_rot,orden_emp_rot AS orden_emp_rot,ids_hor_emp_fk_rot AS ids_hor_emp_fk_rot,tipo_trabajo_rot AS tipo_trabajo_rot,id_sem_fk AS id_sem_fk,dia_descanso AS dia_descanso", "rotacion_base", filtro).Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static List<rotacion_base> ListarTodos_List(string filtro)
		{
			List<rotacion_base> r = new List<rotacion_base>();
			try
			{
				DataTable dt = ListarTodos(filtro);
				for (int i = 0; i < dt.Rows.Count; i++)
					r.Add(Recuperar("id_rot="+dt.Rows[i]["id_rot"]));
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static DataTable ListarTodos_Joins_Empleados(string filtro)
		{
			DataTable r = new DataTable();
			string joins_ = "";
			try
			{
				if(filtro=="")
					joins_ = "rotacion_base.id_emp_fk_rot = empleados.id_emp";
				else
					joins_ = "rotacion_base.id_emp_fk_rot = empleados.id_emp AND " + filtro;
				r = ValidarBuilder.ListarTodos(joins_, "rotacion_base, empleados","*").Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static DataTable ListarTodos_Joins_Empleados_Alias(string filtro)
		{
			DataTable r = new DataTable();
			string joins_ = "";
			string campos_ = "rotacion_base.id_rot AS rotacion_base.id_rot,rotacion_base.id_emp_fk_rot AS rotacion_base.id_emp_fk_rot,rotacion_base.dia_rot AS rotacion_base.dia_rot,rotacion_base.jornada_rot AS rotacion_base.jornada_rot,rotacion_base.orden_emp_rot AS rotacion_base.orden_emp_rot,rotacion_base.ids_hor_emp_fk_rot AS rotacion_base.ids_hor_emp_fk_rot,rotacion_base.tipo_trabajo_rot AS rotacion_base.tipo_trabajo_rot,rotacion_base.id_sem_fk AS rotacion_base.id_sem_fk,rotacion_base.dia_descanso AS rotacion_base.dia_descanso," + 
							 "empleados.id_emp AS empleados.id_emp,empleados.cedula_emp AS empleados.cedula_emp,empleados.nombre_emp AS empleados.nombre_emp,empleados.apellido_emp AS empleados.apellido_emp,empleados.direccion_emp AS empleados.direccion_emp,empleados.telefono_emp AS empleados.telefono_emp,empleados.id_cat_cargo AS empleados.id_cat_cargo,empleados.genero_emp AS empleados.genero_emp,empleados.id_cat_nivel_acad AS empleados.id_cat_nivel_acad,empleados.fecha_nac_emp AS empleados.fecha_nac_emp,empleados.fecha_contrato_emp AS empleados.fecha_contrato_emp,empleados.id_cat_estado_civil_emp AS empleados.id_cat_estado_civil_emp,empleados.cargas_familiares_emp AS empleados.cargas_familiares_emp,empleados.foto_emp AS empleados.foto_emp,empleados.id_cat_doc_identificacion AS empleados.id_cat_doc_identificacion,empleados.fecha_salida_emp AS empleados.fecha_salida_emp,empleados.estado_emp AS empleados.estado_emp,empleados.cat_jor_id_fk_emp AS empleados.cat_jor_id_fk_emp,empleados.id_empr_fk AS empleados.id_empr_fk";
			try
			{
				if(filtro=="")
					joins_ = "rotacion_base.id_emp_fk_rot = empleados.id_emp";
				else
					joins_ = "rotacion_base.id_emp_fk_rot = empleados.id_emp AND " + filtro;
				r = ValidarBuilder.ListarTodos(joins_, "rotacion_base, empleados",campos_).Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static DataTable ListarTodos_Joins_Semana_base(string filtro)
		{
			DataTable r = new DataTable();
			string joins_ = "";
			try
			{
				if(filtro=="")
					joins_ = "rotacion_base.id_sem_fk = semana_base.id_sem";
				else
					joins_ = "rotacion_base.id_sem_fk = semana_base.id_sem AND " + filtro;
				r = ValidarBuilder.ListarTodos(joins_, "rotacion_base, semana_base","*").Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static DataTable ListarTodos_Joins_Semana_base_Alias(string filtro)
		{
			DataTable r = new DataTable();
			string joins_ = "";
			string campos_ = "rotacion_base.id_rot AS rotacion_base.id_rot,rotacion_base.id_emp_fk_rot AS rotacion_base.id_emp_fk_rot,rotacion_base.dia_rot AS rotacion_base.dia_rot,rotacion_base.jornada_rot AS rotacion_base.jornada_rot,rotacion_base.orden_emp_rot AS rotacion_base.orden_emp_rot,rotacion_base.ids_hor_emp_fk_rot AS rotacion_base.ids_hor_emp_fk_rot,rotacion_base.tipo_trabajo_rot AS rotacion_base.tipo_trabajo_rot,rotacion_base.id_sem_fk AS rotacion_base.id_sem_fk,rotacion_base.dia_descanso AS rotacion_base.dia_descanso," + 
							 "semana_base.id_sem AS semana_base.id_sem,semana_base.nro_matutina_sem AS semana_base.nro_matutina_sem,semana_base.nro_vespertina_sem AS semana_base.nro_vespertina_sem,semana_base.nro_nocturna AS semana_base.nro_nocturna,semana_base.nro_emp_sem AS semana_base.nro_emp_sem,semana_base.nro_dias_sem AS semana_base.nro_dias_sem,semana_base.estado_sem AS semana_base.estado_sem,semana_base.fecha_registro_sem AS semana_base.fecha_registro_sem,semana_base.fecha_inicio_sem AS semana_base.fecha_inicio_sem,semana_base.fecha_fin_sem AS semana_base.fecha_fin_sem";
			try
			{
				if(filtro=="")
					joins_ = "rotacion_base.id_sem_fk = semana_base.id_sem";
				else
					joins_ = "rotacion_base.id_sem_fk = semana_base.id_sem AND " + filtro;
				r = ValidarBuilder.ListarTodos(joins_, "rotacion_base, semana_base",campos_).Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static DataTable ListarTodos_Joins(string filtro)
		{
			DataTable r = new DataTable();
			string joins_ = "";
			try
			{
				if(filtro=="")
					joins_ = "rotacion_base.id_emp_fk_rot = empleados.id_emp AND rotacion_base.id_sem_fk = semana_base.id_sem ";
				else
					joins_ = "rotacion_base.id_emp_fk_rot = empleados.id_emp AND rotacion_base.id_sem_fk = semana_base.id_sem AND  " + filtro;
				r = ValidarBuilder.ListarTodos(joins_, "empleados,semana_base,rotacion_base","*").Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		public static DataTable ListarTodos_Joins_Alias(string filtro)
		{
			DataTable r = new DataTable();
			string joins_ = "";
			string campos_ = "rotacion_base.id_rot AS rotacion_base.id_rot,rotacion_base.id_emp_fk_rot AS rotacion_base.id_emp_fk_rot,rotacion_base.dia_rot AS rotacion_base.dia_rot,rotacion_base.jornada_rot AS rotacion_base.jornada_rot,rotacion_base.orden_emp_rot AS rotacion_base.orden_emp_rot,rotacion_base.ids_hor_emp_fk_rot AS rotacion_base.ids_hor_emp_fk_rot,rotacion_base.tipo_trabajo_rot AS rotacion_base.tipo_trabajo_rot,rotacion_base.id_sem_fk AS rotacion_base.id_sem_fk,rotacion_base.dia_descanso AS rotacion_base.dia_descanso," + 
							 "empleados.id_emp AS empleados.id_emp,empleados.cedula_emp AS empleados.cedula_emp,empleados.nombre_emp AS empleados.nombre_emp,empleados.apellido_emp AS empleados.apellido_emp,empleados.direccion_emp AS empleados.direccion_emp,empleados.telefono_emp AS empleados.telefono_emp,empleados.id_cat_cargo AS empleados.id_cat_cargo,empleados.genero_emp AS empleados.genero_emp,empleados.id_cat_nivel_acad AS empleados.id_cat_nivel_acad,empleados.fecha_nac_emp AS empleados.fecha_nac_emp,empleados.fecha_contrato_emp AS empleados.fecha_contrato_emp,empleados.id_cat_estado_civil_emp AS empleados.id_cat_estado_civil_emp,empleados.cargas_familiares_emp AS empleados.cargas_familiares_emp,empleados.foto_emp AS empleados.foto_emp,empleados.id_cat_doc_identificacion AS empleados.id_cat_doc_identificacion,empleados.fecha_salida_emp AS empleados.fecha_salida_emp,empleados.estado_emp AS empleados.estado_emp,empleados.cat_jor_id_fk_emp AS empleados.cat_jor_id_fk_emp,empleados.id_empr_fk AS empleados.id_empr_fk," + 
							 "semana_base.id_sem AS semana_base.id_sem,semana_base.nro_matutina_sem AS semana_base.nro_matutina_sem,semana_base.nro_vespertina_sem AS semana_base.nro_vespertina_sem,semana_base.nro_nocturna AS semana_base.nro_nocturna,semana_base.nro_emp_sem AS semana_base.nro_emp_sem,semana_base.nro_dias_sem AS semana_base.nro_dias_sem,semana_base.estado_sem AS semana_base.estado_sem,semana_base.fecha_registro_sem AS semana_base.fecha_registro_sem,semana_base.fecha_inicio_sem AS semana_base.fecha_inicio_sem,semana_base.fecha_fin_sem AS semana_base.fecha_fin_sem";
			try
			{
				if(filtro=="")
					joins_ = "rotacion_base.id_emp_fk_rot = empleados.id_emp AND rotacion_base.id_sem_fk = semana_base.id_sem ";
				else
					joins_ = "rotacion_base.id_emp_fk_rot = empleados.id_emp AND rotacion_base.id_sem_fk = semana_base.id_sem AND  " + filtro;
				r = ValidarBuilder.ListarTodos(joins_, "empleados,semana_base,rotacion_base",campos_).Tables[0];
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return r;
		}

		#endregion

		#region < METODOS PUBLICOS VALIDACION >
		public static rotacion_base valida_campos_rotacion_base(Control ctrl_id_rot,Control ctrl_id_emp_fk_rot,TextBox txt_dia_rot,TextBox txt_jornada_rot,Control ctrl_orden_emp_rot,TextBox txt_ids_hor_emp_fk_rot,TextBox txt_tipo_trabajo_rot,Control ctrl_id_sem_fk,TextBox txt_dia_descanso)
		{
			bool r = true;
			rotacion_base new_rotacion_base = new rotacion_base();
			try
			{
				if(ctrl_id_rot.GetType().Equals(typeof(TextBox)))
				{
					TextBox txt_id_rot = (TextBox)ctrl_id_rot;
					if (txt_id_rot.TextLength == 0)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_rot","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					else
					{
						if (Convert.ToInt32(txt_id_rot.Text) == 0)
						{
							r = false;
							MessageBox.Show("Falta ingresar el/la id_rot","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
						}
					}
					if (r)
						new_rotacion_base.Id_rot = Convert.ToInt32(txt_id_rot.Text);
				}
				if(ctrl_id_rot.GetType().Equals(typeof(ComboBox)))
				{
					ComboBox cmb_id_rot = (ComboBox)ctrl_id_rot;
					if (cmb_id_rot.SelectedIndex == -1)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_rot","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					if (r)
						new_rotacion_base.Id_rot = Convert.ToInt32(cmb_id_rot.SelectedValue);
				}
				if(ctrl_id_emp_fk_rot.GetType().Equals(typeof(TextBox)))
				{
					TextBox txt_id_emp_fk_rot = (TextBox)ctrl_id_emp_fk_rot;
					if (txt_id_emp_fk_rot.TextLength == 0)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_emp_fk_rot","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					else
					{
						if (Convert.ToInt32(txt_id_emp_fk_rot.Text) == 0)
						{
							r = false;
							MessageBox.Show("Falta ingresar el/la id_emp_fk_rot","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
						}
					}
					if (r)
						new_rotacion_base.Id_emp_fk_rot = Convert.ToInt32(txt_id_emp_fk_rot.Text);
				}
				if(ctrl_id_emp_fk_rot.GetType().Equals(typeof(ComboBox)))
				{
					ComboBox cmb_id_emp_fk_rot = (ComboBox)ctrl_id_emp_fk_rot;
					if (cmb_id_emp_fk_rot.SelectedIndex == -1)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_emp_fk_rot","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					if (r)
						new_rotacion_base.Id_emp_fk_rot = Convert.ToInt32(cmb_id_emp_fk_rot.SelectedValue);
				}
				if (txt_dia_rot.TextLength == 0)
				{
					r = false;
					MessageBox.Show("Falta ingresar el/la dia_rot","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
				}
				if (r)
					new_rotacion_base.Dia_rot = txt_dia_rot.Text;
				if (txt_jornada_rot.TextLength == 0)
				{
					r = false;
					MessageBox.Show("Falta ingresar el/la jornada_rot","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
				}
				if (r)
					new_rotacion_base.Jornada_rot = txt_jornada_rot.Text;
				if(ctrl_orden_emp_rot.GetType().Equals(typeof(TextBox)))
				{
					TextBox txt_orden_emp_rot = (TextBox)ctrl_orden_emp_rot;
					if (txt_orden_emp_rot.TextLength == 0)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la orden_emp_rot","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					else
					{
						if (Convert.ToInt32(txt_orden_emp_rot.Text) == 0)
						{
							r = false;
							MessageBox.Show("Falta ingresar el/la orden_emp_rot","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
						}
					}
					if (r)
						new_rotacion_base.Orden_emp_rot = Convert.ToInt32(txt_orden_emp_rot.Text);
				}
				if(ctrl_orden_emp_rot.GetType().Equals(typeof(ComboBox)))
				{
					ComboBox cmb_orden_emp_rot = (ComboBox)ctrl_orden_emp_rot;
					if (cmb_orden_emp_rot.SelectedIndex == -1)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la orden_emp_rot","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					if (r)
						new_rotacion_base.Orden_emp_rot = Convert.ToInt32(cmb_orden_emp_rot.SelectedValue);
				}
				if (txt_ids_hor_emp_fk_rot.TextLength == 0)
				{
					r = false;
					MessageBox.Show("Falta ingresar el/la ids_hor_emp_fk_rot","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
				}
				if (r)
					new_rotacion_base.Ids_hor_emp_fk_rot = txt_ids_hor_emp_fk_rot.Text;
				if (txt_tipo_trabajo_rot.TextLength == 0)
				{
					r = false;
					MessageBox.Show("Falta ingresar el/la tipo_trabajo_rot","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
				}
				if (r)
					new_rotacion_base.Tipo_trabajo_rot = txt_tipo_trabajo_rot.Text;
				if(ctrl_id_sem_fk.GetType().Equals(typeof(TextBox)))
				{
					TextBox txt_id_sem_fk = (TextBox)ctrl_id_sem_fk;
					if (txt_id_sem_fk.TextLength == 0)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_sem_fk","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					else
					{
						if (Convert.ToInt32(txt_id_sem_fk.Text) == 0)
						{
							r = false;
							MessageBox.Show("Falta ingresar el/la id_sem_fk","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
						}
					}
					if (r)
						new_rotacion_base.Id_sem_fk = Convert.ToInt32(txt_id_sem_fk.Text);
				}
				if(ctrl_id_sem_fk.GetType().Equals(typeof(ComboBox)))
				{
					ComboBox cmb_id_sem_fk = (ComboBox)ctrl_id_sem_fk;
					if (cmb_id_sem_fk.SelectedIndex == -1)
					{
						r = false;
						MessageBox.Show("Falta ingresar el/la id_sem_fk","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
					}
					if (r)
						new_rotacion_base.Id_sem_fk = Convert.ToInt32(cmb_id_sem_fk.SelectedValue);
				}
				if (txt_dia_descanso.TextLength == 0)
				{
					r = false;
					MessageBox.Show("Falta ingresar el/la dia_descanso","Información",MessageBoxButtons.OK,MessageBoxIcon.Stop);
				}
				if (r)
					new_rotacion_base.Dia_descanso = txt_dia_descanso.Text;

				if(!r)
					new_rotacion_base = null;
			}
			catch (Exception ex)
			{
				throw ex;
			}
			return new_rotacion_base;
		}

		public static void grabar_actualizar_registro(Control ctrl_id_rot,Control ctrl_id_emp_fk_rot,TextBox txt_dia_rot,TextBox txt_jornada_rot,Control ctrl_orden_emp_rot,TextBox txt_ids_hor_emp_fk_rot,TextBox txt_tipo_trabajo_rot,Control ctrl_id_sem_fk,TextBox txt_dia_descanso)
		{
			try
			{
				rotacion_base new_rotacion_base =valida_campos_rotacion_base(ctrl_id_rot,ctrl_id_emp_fk_rot,txt_dia_rot,txt_jornada_rot,ctrl_orden_emp_rot,txt_ids_hor_emp_fk_rot,txt_tipo_trabajo_rot,ctrl_id_sem_fk,txt_dia_descanso); 
				if(new_rotacion_base!=null)
					GrabarViaSql(new_rotacion_base);
			}
			catch (Exception ex)
			{
				throw ex;
			}
		}

		#endregion

	}
}
